package uva.sc.qls.main;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.ANTLRFileStream;
import uva.sc.ql.ast.IQLExpressionNode;
import uva.sc.ql.evaluator.EvaluatorVisitor;
import uva.sc.ql.gui.GUIVisitor;
import uva.sc.ql.parser.ASTGeneratorVisitor;
import uva.sc.ql.parser.QLGrammarLexer;
import uva.sc.ql.parser.QLGrammarParser;
import uva.sc.qls.ast.IQLSNode;
import uva.sc.qls.parser.*;
import uva.sc.qls.typeChecker.TypeCheckerVisitor;
public class Main {
public static void main(String[] args) throws Exception {
//CharStream in = new ANTLRFileStream("C:/Users/Pantelis/git/software-construction/QLS/form/test.grammar");
/*
* CharStream in = new ANTLRFileStream(
* "/Users/santiagovalenciavargas/Documents/UvA/workspace/Software Construction/QL_QLS/QLS/form/test.grammar"
* ); QLSGrammarLexer lexer = new QLSGrammarLexer(in); CommonTokenStream
* tokens = new CommonTokenStream(lexer); QLSGrammarParser parser = new
* QLSGrammarParser(tokens); ParseTree tree = parser.stylesheet();
*
* ASTGeneratorVisitor visitor = new ASTGeneratorVisitor(); IQLSNode
* questionnaire = (IQLSNode) visitor.visit(tree);
* //System.out.print(questionnaire);
*
* TypeCheckerVisitor tc = new TypeCheckerVisitor();
* questionnaire.accept(tc); System.out.println(tc.getErrors());
*/
//QL
CharStream in = new ANTLRFileStream("/Users/santiagovalenciavargas/Documents/UvA/workspace/Software Construction/QL_QLS/QL/form/test.grammar");
QLGrammarLexer lexer = new QLGrammarLexer(in);
CommonTokenStream tokens = new CommonTokenStream(lexer);
QLGrammarParser parser = new QLGrammarParser(tokens);
ParseTree tree = parser.form();
uva.sc.ql.parser.ASTGeneratorVisitor visitor = new ASTGeneratorVisitor();
IQLExpressionNode questionnaire = (IQLExpressionNode) visitor.visit(tree);
//System.out.print(questionnaire);
uva.sc.ql.typeChecker.TypeCheckerVisitor tc = new uva.sc.ql.typeChecker.TypeCheckerVisitor();
questionnaire.accept(tc);
EvaluatorVisitor eval = new EvaluatorVisitor();
try {
questionnaire.accept(eval);
}
catch (Exception e) {
}
GUIVisitor v = new GUIVisitor(eval);
questionnaire.accept(v);
//QLS
CharStream qlsin = new ANTLRFileStream("/Users/santiagovalenciavargas/Documents/UvA/workspace/Software Construction/QL_QLS/QLS/form/test.grammar");
QLSGrammarLexer qlslexer = new QLSGrammarLexer(qlsin);
CommonTokenStream qlstokens = new CommonTokenStream(qlslexer);
QLSGrammarParser qlsparser = new QLSGrammarParser(qlstokens);
ParseTree qlstree = qlsparser.stylesheet();
ASTGeneratorVisitor qlsvisitor = new ASTGeneratorVisitor();
IQLSNode qlsquestionnaire = (IQLSNode) qlsvisitor.visit(qlstree);
//System.out.print(questionnaire);
TypeCheckerVisitor qlstc = new TypeCheckerVisitor(v);
qlsquestionnaire.accept(qlstc);
//System.out.println(tc.getErrors());
}
}